package com.zh.yqbj.util;

import cn.hutool.core.util.ReUtil;
import cn.hutool.core.util.StrUtil;
import com.zh.yqbj.constant.CaptchaConstant;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;

@Component
public class ValidationUtil {

    @Autowired
    private  RedisTemplate<String, Object> redisTemplate;

    /**
     * 验证手机号格式
     * @param phone
     * @return
     */
    public  boolean isPhone(String phone) {
        // 手机号码验证
        return ReUtil.isMatch("^1[3-9]\\d{9}$", phone);

    }

    /**
     * 验证邮箱格式
     * @param email
     * @return
     */
    public  boolean isEmail(String email) {
        // 邮箱验证
        return ReUtil.isMatch("^(([^<>()\\\\.,;:\\s@\"]+(\\.[^<>()\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\" +
                ".[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$", email);
    }

    /**
     * 验证用户名格式 6-16 为字母组合
     * @param username 用户名
     * @return 是否
     */
    public boolean greatUsername(String username){
        return ReUtil.isMatch("^[a-zA-Z0-9_]{6,16}$",username);
    }

    /**
     * @param imageBase64 传入key
     * @param code        传入验证码
     * @param prefix      验证码类型
     * @return yes no
     */
    public  boolean codeCheck(String imageBase64, String code, String prefix) {
        String redisCode = (String) redisTemplate.opsForValue().get(prefix + imageBase64);
        if (!StrUtil.equals(redisCode, code)) {
            // 验证码不对
            redisTemplate.delete(prefix + imageBase64);
            return false;
        }
        // 验证码用完就销毁，减少内存占用，但开发阶段保留
        redisTemplate.delete(prefix+ imageBase64);
        return true;
    }
}
